AWS Transfer for SFTPを使って、Amazon Linux 2にマウントしてみた #reinvent
はじめに
こんにちは、コンサル部の望月です。
re:invent2018もアディショナルタイムに入りました。
新サービス、AWS Transfer for SFTPが発表されましたが、最初の私の感想としてマウントしてみたい。というものがありました。ということでマウントしてみました。
やってみた
SFTPサーバの作成
こちらは下記ブログにて詳細に書かれているので本ブログでは書きません。作成する際には、ぜひ下記ブログを参考にしてください。
Amazon Linux 2からSFTP接続
さて、みなさんSFTPサーバの作成は終わったかと思います。
それでは、適当なファイルを作成し、ファイルをSFTPでアップロードできることを確認します。
$ echo test > test.txt $ $ sftp -i keypair.pem yutamochizuki@s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com Connected to s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com sftp> put ./test.txt Uploading ./test.txt to /<バケット名>/test.txt ./test.txt 100% 5 0.4KB/s 00:00 sftp> ls test.txt sftp> sftp> sftp> exit
問題なければ、いよいよSFTPでのマウントを行います。
マウントにはsshfsコマンドを利用しますが、例のごとく通常レポジトリにはなくepelが必要となるため amazon-linux-extrasコマンドでepelを有効化し、fuse-sshfsパッケージをインストールします。
$ sudo amazon-linux-extras install epel $ sudo yum install fuse-sshfs
マウントポイントとして/sftpfsを作成し、マウントを行います。マウント時に以下注意点があります。
- IdentityFileでの秘密鍵指定は絶対パスの必要があります
- sftpコマンドの場合、sftpユーザ作成時に指定したホームディレクトリにそのまま接続しますが、sshfsコマンドでのマウント時にはホームディレクトリを指定する必要があります
$ sudo mkdir /sftpfs $ sudo chown ec2-user. /sftpfs/ $ sshfs -o IdentityFile=/home/ec2-user/keypair.pem yutamochizuki@s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com:/<バケット名> /sftpfs
エラー等、出力がなかった場合はdfコマンドでマウントされていることを確認します。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 388K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 1.4G 6.7G 18% / tmpfs 99M 0 99M 0% /run/user/1000 yutamochizuki@s-xxxxxxxxxxxxxxxxx.server.transfer.ap-northeast-1.amazonaws.com:/<バケット名> 1000G 0 1000G 0% /sftpfs
簡単にファイルの追加と削除を試してみましたが、問題なく使えました。
$ echo test > /sftpfs/test2.txt $ cat /sftpfs/test2.txt test $ rm /sftpfs/test2.txt $ ls /sftpfs/test2.txt
簡単に書き込み速度を測ってみました。(t2.microにて実施)
$ dd bs=1M count=100 if=/dev/zero of=/sftpfs/disktest oflag=direct 100+0 レコード入力 100+0 レコード出力 104857600 バイト (105 MB) コピーされました、 2.85042 秒、 36.8 MB/秒
最後に、マウントした/sftpfsをアンマウントします。
$ fusermount -u /sftpfs
アンマウントされたことを確認します。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 444K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 1.4G 6.7G 18% / tmpfs 99M 0 99M 0% /run/user/1000 tmpfs 99M 0 99M 0% /run/user/0
まとめ
予想通り、問題なくAWS Transfer for SFTPをファイルシステムとしてマウントすることができ、マウント欲を解消することができました。
s3fsなど、S3を直接マウントするよりも、手軽にマウントできる反面、AWS Transfer for SFTP分のコストが発生するため、ご注意ください。
また、想定された使い方ではないため、事前検証がんばりましょう。